import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;

class Solution {
    public List<List<Integer>> kSmallestPairs(int[] nums1, int[] nums2, int k) {
        List<List<Integer>> ans=new ArrayList<>();
        PriorityQueue<int[]> pq=new PriorityQueue<>
                ((a, b) -> (nums1[a[0]] + nums2[a[1]] - nums1[b[0]] - nums2[b[1]]));
        for(int i=0;i<Math.min(nums1.length,k);i++){
            pq.offer(new int[]{i,0});
        }
        int count=0;
        while(count<k){
            int now[]=pq.poll();
            List<Integer> list=new ArrayList<>();
            list.add(nums1[now[0]]);
            list.add(nums2[now[1]]);
            ans.add(list);
            count++;
            if(now[1]+1<nums2.length){
                pq.offer(new int[]{now[0],now[1]+1});
            }
        }
        return ans;
    }
    public static void main(String[] args) {
        Solution solution=new Solution();
        int[] nums1=new int[]{1,7,11};
        int[] nums2=new int[]{2,4,6};
        List<List<Integer>> amp=solution.kSmallestPairs(nums1, nums2, 3);
        for(int i=0;i<amp.size();i++){
            System.out.println(amp.get(i));
        }
    }
}